LiveDisplayX / src / app / api / displays / [displayId] / route.ts
route.ts
Raw
import { auth } from "@clerk/nextjs/server";
import prisma from "@/lib/prisma";
import { NextResponse } from "next/server";

export async function GET(
  req: Request,
  { params }: { params: { displayId: string } }
) {
  const { userId, orgId } = await auth();

  if (!userId || !orgId) {
    return new Response("Unauthorized", { status: 401 });
  }

  const display = await prisma.display.findUnique({
    where: {
      id: params.displayId,
      organizationId: orgId,
    },
  });

  if (!display) {
    return new Response("Not found", { status: 404 });
  }

  return NextResponse.json(display);
}

export async function PUT(
  req: Request,
  { params }: { params: { displayId: string } }
) {
  const { userId, orgId } = await auth();

  if (!userId || !orgId) {
    return new Response("Unauthorized", { status: 401 });
  }

  const updates = await req.json();

  const display = await prisma.display.update({
    where: {
      id: params.displayId,
      organizationId: orgId,
    },
    data: updates,
  });

  return NextResponse.json(display);
}

export async function DELETE(
  req: Request,
  { params }: { params: { displayId: string } }
) {
  const { userId, orgId } = await auth();

  if (!userId || !orgId) {
    return new Response("Unauthorized", { status: 401 });
  }

  await prisma.display.delete({
    where: {
      id: params.displayId,
      organizationId: orgId,
    },
  });

  return new Response(null, { status: 204 });
}